package 对称二叉树;
import 相同的树.TreeNode;

class Solution {
    public boolean isSymmetric(TreeNode root) {
        //当树为空树或者树中只有一个结点此树为对称二叉树
        if (root == null || (root.left ==null && root.right ==null)){
            return true;
        }
        //方法isSymmetricChild返回值就是判断结果
        return isSymmetricChild(root.left,root.right);
    }
    //判断左右子树是否对称
    public boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree){
        //如果两棵树都是空树那么他们相同
        if(leftTree == null && rightTree == null){
            return true;
        }else if(leftTree == null || rightTree == null){
            //当一棵树为空一棵树不为空,他们不相同
            return false;
        }
        //当左树根结点的值与右树根结点的值不一样,说明他们不是对称的
        if(leftTree.val != rightTree.val){
            return false;
        }
        //返回左树与右树成对应关系的左右孩子是否相同的结果
        return isSymmetricChild(leftTree.left,rightTree.right)&&
                isSymmetricChild(leftTree.right,rightTree.left);
    }
}